﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TheOutLetLibrary.Infraestrutura;
using TheOutLetLibrary.Dominio;
using Ninject;
using Ninject.Parameters;
using System.Globalization;

namespace TheOutLetUI {

    public partial class FrmCargaNF : Form {

        private MeuKernel kernel;

        public FrmCargaNF() {
            InitializeComponent();
        }

        private void FrmCargaNF_Load(object sender, EventArgs e) {
            // TODO: This line of code loads data into the 'theOutLetDataSet.tb_empresa' table. You can move, or remove it, as needed.
            this.tb_empresaTableAdapter.Fill(this.theOutLetDataSet.tb_empresa);
            kernel = new MeuKernel();
            btnCarregarNFs.Enabled = false;
        }

        private void btnSelecionarNFs_Click(object sender, EventArgs e) {

            RemoveDaGridArquivosProcessados();

            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "xml files (*.xml)|*.xml";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;
            openFileDialog1.Multiselect = true;

            if(openFileDialog1.ShowDialog() == DialogResult.OK) {
                string[] arquivos = openFileDialog1.FileNames;
                foreach(string arq in arquivos) {
                    DataGridArquivosXml.Rows.Add(arq);
                }
                btnCarregarNFs.Enabled = true;
            }

        }

        private void RemoveDaGridArquivosProcessados() {
            if(DataGridArquivosXml.Rows.Count > 0 && DataGridArquivosXml.Rows[0].Cells[1].Value != null) {
                DataGridArquivosXml.Rows.Clear();
            }
        }

        private void btnLimparSelecao_Click_1(object sender, EventArgs e) {
            DataGridArquivosXml.Rows.Clear();
            btnCarregarNFs.Enabled = false;
        }

        private void btnCarregarNFs_Click(object sender, EventArgs e) {

            // A criação do CarregadorNF tem que ser colocada aqui porque quando ele é criado
            // gera um novo registro de remessa, que deve ser único para todas
            // as notas fiscais que serão importadas

            CarregadorNF carregadorNF = kernel.Get<CarregadorNF>(new ConstructorArgument("idEmpresa", (int)cmbEmpresa.SelectedValue));
            
            for(int r = 0; r < DataGridArquivosXml.Rows.Count; r++) {
                DataGridArquivosXml.Rows[r].Cells[1].Value =
                    carregadorNF.ImportaNF(DataGridArquivosXml.Rows[r].Cells[0].Value.ToString());
            }

            btnCarregarNFs.Enabled = false;

        }

    }
}
